﻿using System;
using System.Collections.Generic;
using LifecycleSample.Common;
using LifecycleSample.DataModel;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

// The Basic Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234237

namespace LifecycleSample
{
  /// <summary>
  /// A basic page that provides characteristics common to most applications.
  /// </summary>
  public sealed partial class Page2 : LayoutAwarePage
  {
    private Page2Data data;

    public Page2()
    {
      this.InitializeComponent();
    }

    /// <summary>
    /// Populates the page with content passed during navigation.  Any saved state is also
    /// provided when recreating a page from a prior session.
    /// </summary>
    /// <param name="navigationParameter">The parameter value passed to
    /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested.
    /// </param>
    /// <param name="pageState">A dictionary of state preserved by this page during an earlier
    /// session.  This will be null the first time a page is visited.</param>
    protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
    {
      if (pageState != null && pageState.ContainsKey("Page2"))
      {
        data = pageState["Page2"] as Page2Data;
      }
      else
      {
        data = new Page2Data() { Data = "initital data" };
      }

      this.DefaultViewModel["Page2Data"] = data;
    }

    /// <summary>
    /// Preserves state associated with this page in case the application is suspended or the
    /// page is discarded from the navigation cache.  Values must conform to the serialization
    /// requirements of <see cref="SuspensionManager.SessionState"/>.
    /// </summary>
    /// <param name="pageState">An empty dictionary to be populated with serializable state.</param>
    protected override void SaveState(Dictionary<String, Object> pageState)
    {
      pageState.Add("Page2", data);
    }

    private void OnGotoPage3(object sender, RoutedEventArgs e)
    {
      Frame.Navigate(typeof(Page3));
    }
  }
}
